1. Field
Implementations of the invention relate to peer to peer resource negotiation and coordination to satisfy a service level objective.
2. Description of the Related Art
A service level objective may be described as a specification of a metric that is associated with both breach values for peak and off-peak hours in a schedule and a guaranteed level of service that is defined in a service level agreement (SLA). A SLA may be described as a contract between a customer and a service provider that specifies the expectations for the level of service with respect to availability, performance, and other measurable objectives. A metric may be described as a measurement type where each resource that can be monitored for performance, availability, reliability, and other attributes has one or more metrics about which data is collected. Sample metrics include the amount of Random Access Memory (RAM) on a computer, the number of help desk calls made by a customer, the average Central Processing Unit (CPU) busy time for a server computer, and mean time to failure for a hardware device. A breach value may be described as the value at which a service level objective (SLO) is considered as not being met.
In conventional systems, satisfying a service level objective for a collection of long running transactions or workflows in an enterprise data center may mean that several independent resource providers each allocate a required amount of resources. A transaction may be described as a related set of tasks that accomplish a particular action (e.g., obtaining an account balance for a bank customer). A workflow may be described as set of interdependent tasks or a sequence of activities performed in accordance with the business processes of an enterprise. An enterprise may be described as a business organization (e.g., one or more establishments, divisions, plants, warehouses, etc. that form a business organization). A resource provider may be described as any entity that provides resources (e.g., a storage manager).
The need for the resources is usually sequential. That is, the first part of a transaction requires resource A from a first resource provider, then resource B from a second resource provider, and so forth to complete successfully while meeting the service level objectives. The resource providers are usually independent and allocate resources independently of each other. The amount of resources required for a transaction is both variable and not easily predictable, therefore, the service level objects are difficult to meet. Reacting to demand changes without coordination among the resource providers usually results in under allocation of resources that results in service level objectives being breached or over allocation of resources to ensure that the service level objectives are met.
Also, in some conventional systems, a collection of resources hosted by a resource provider may be shared by multiple transaction classes. A transaction class may be described as an interface class that defines the methods implemented by a business object and that an application may use. A business object may be described as a set of attributes that represent a business entity (e.g., Employee) and methods that operate on data (e.g., a create or update operation). Although there has been some work done to create control functions to manage and optimize the allocation of resources based on metrics local to one resource provider, there is a need in the art for optimizing the allocation of resources when multiple resource providers are involved in meeting a service level objective.